<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\models\Role;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\models\auser;
use App\Http\Requests\admin\AuserInsertRequest;
use Hash;
use DB;

class UserController extends Controller
{
    //返回用户授权页面
    public function auth($id)
    {

        //获取当前登录用户
        $user = auser::find($id);
        //获取所有的角色
        $roles = Role::get();


        //也可以通过模型找到当前用户拥有的权限
        $role_user  =auser::find($id)->role;
        $own_pers = [];
        foreach ($role_user as $v){
            $own_pers[]=$v->id;
        }
        //dd($own_pers);

        return view('admin.user.auth',compact('roles','user','own_pers'));
    }

    public function doauth(Request $request)
    {
        //1 接受表单传过来的值
        $input = $request->except('_token');
        // dd($input);
        // dd($input);
        //dd($input);
        //删除当前用户已经拥有的角色
        DB::table('role_user')->where('uid', '=', $input['id'])->delete();
        //2 将最新的当前用户的id和授予的角色添加到role_user表中，给用户授权
        foreach ($input['rid'] as $v){
            DB::table('role_user')->insert(['uid'=>$input['id'],'rid'=>$v]);
        }

        //如果授权成功，返回授权页面
        return redirect('admin/user')->with('msg','授权成功');
    }


    /**
     * 张翔铭
     * 2017.10.30
     * 查看用户
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        // 接收搜索内容
        $keywords = $request->input('keywords') ? $request->input('keywords') : '';

        // 接收分页页数
        $count = $request->input('count') ? $request->input('count') : '3';

        // 接收所有参数
        $res = $request -> all();
        // 按条件查询信息
        $data = auser::where('username','like','%'.$keywords.'%')->paginate($count);
        // dd($data);
        // $data = auser::all();


        return view('admin.user.index',compact('data','res','count','keywords'));

    }

    /**
     * 显示添加的页面
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        // 显示添加页
        return view('admin.user.create');
    }

    /**
     * 添加过程
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(AuserInsertRequest $request)
    {

        

        // 接收除_token外的所有信息
        $data = $request->except('_token');
         // dd($data);
        
        // 添加一条信息
        $auser = new auser;
        $auser -> username = $data['username'];
        $auser -> password = Hash::make($data['password']);
        
        
        // 判断是否添加成功
        if($auser->save()){
            return redirect('admin/user')->with('success','添加成功');
        }else{
            return back()->with('error','添加失败');
        }

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * 修改页面显示
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        // 查取一条信息
        $data = auser::find($id);
        // dd($data);
        return view('admin.user.edit',compact('data'));
    }

    /**
     * 修改过程
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        // 接收表单提交内容
        $username = $request->input('username');

        // 查询修改哪条内容
        $data = auser::find($id);
        // 修改内容
        $data->username = $username;
        // 判断是否修改成功
        if($data->save()){
            return redirect('/admin/user');
        }else{
            return back()->with('msg','修改失败');
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $data = [];
        $res = auser::find($id)->delete();
        if($res){
            $data=[
                'status'=>0,
                'msg'=>'删除成功'
            ];
        }else{
            $data=[
                'status'=>1,
                'msg'=>'删除失败'
            ];
        }
        return $data;
    }
}
